Docker Compose with Docker multi-stage builds
具体的には、productionでは要らないnpmのdevDependenciesが、testでは欲しいというような場合
Dockerfileを複数作って、それぞれのRUNを変えるようなのが古いやり方
productionでは RUN npm install --production
testではRUN npm install
multi-stage builds用のDockerfileだとこんな感じになる
code:Dockerfile
FROM node:8-alpine as base
FROM base as dev
ENV NODE_ENV=development
RUN npm install
FROM base as prod
ENV NODE_ENV=production
RUN npm install --production
余談だが、NODE_ENV=productionであれば勝手に--productionと同じになるので、上の場合は付けなくてもいい
buildにtargetを使えば特定のstageを指定できる
code:docker-compose.dev.yml
build:
context: .
target: dev